import gradio as gr
from mmrole_lite import MMRoleLite
from config_lite import ConfigLite

def create_demo():
    print("正在初始化MMRole Lite...")
    agent = MMRoleLite(ConfigLite)
    
    def process(image, character_id, question):
        print(f"处理图片并生成{character_id}的回应...")
        # 分析图片
        image_desc = agent.analyze_image(image)
        print(f"图片描述: {image_desc}")
        
        # 生成回应
        response = agent.generate_response(character_id, image_desc, question)
        print(f"生成回应: {response}")
        
        # 评估回应
        scores = agent.evaluate_response(response, character_id, image_desc)
        scores_text = "\n".join([
            f"角色一致性: {scores['character_consistency']:.2f}",
            f"多模态理解: {scores['multimodal_understanding']:.2f}",
            f"交互质量: {scores['interaction_quality']:.2f}"
        ])
        
        return response, scores_text

    # 创建Gradio界面
    demo = gr.Interface(
        fn=process,
        inputs=[
            gr.Image(type="filepath", label="上传一张图片"),
            gr.Dropdown(
                choices=list(ConfigLite.CHARACTERS.keys()),
                label="选择角色"
            ),
            gr.Textbox(label="您的问题")
        ],
        outputs=[
            gr.Textbox(label="角色回应"),
            gr.Textbox(label="评估结果")
        ],
        title="MMRole Lite Demo",
        description="""多模态角色扮演代理演示版
功能特点：
1. 图像理解：分析上传图片的内容
2. 角色扮演：模拟特定角色的对话风格
3. 评估系统：评估回应的质量

使用说明：
1. 上传一张图片
2. 选择想要对话的角色
3. 输入您的问题
"""
    )
    return demo

if __name__ == "__main__":
    print("启动MMRole Lite Demo...")
    demo = create_demo()
    demo.launch() 